/**
 * 题目中没有没描述清楚的地方：左右闭合的一对之间的组合必须也是闭合的
 * @param {string} s
 * @return {boolean}
 */
let isValid = function (s) {
    const n = s.length
    if(s.length % 2 === 1)return false

    let leftStack = [],
        map = {
            "}": "{",
            "]": "[",
            ")": "(",
        }
    for (let i = 0; i < n; i++) {
        const item = s[i]
        if (map[item]) {
            // 如果字符是右闭合，leftStack必须是左闭合
            if (leftStack[leftStack.length - 1] === map[item]) {
                leftStack.pop()
                continue
            }
            return false
        }
        leftStack.push(item)
    }
    return leftStack.length === 0
};